package com.itheima.stock.api;

import com.itheima.stock.entity.StockBusiness;
import com.itheima.stock.response.ResponseResult;
import com.itheima.stock.vo.*;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * @Author:gzc
 * @Date: 2025/10/23 16:01
 * @Description:
 */
@RequestMapping("/api/quot")
public interface StockControllerAPI {

    @GetMapping("/stock/business/all")
    ResponseResult<List<StockBusiness>> getAllStockBusiness();

    /**
     * 获取国内最新大盘指数
     * @return
     */
    @GetMapping("/index/all")
    ResponseResult<List<InnerMarketVO>> innerIndexAll();


    /**
     * 板块指数
     * @return
     */
    @GetMapping("/sector/all")
    ResponseResult<List<SectorAllVO>> sectorAll();

    /**
     * 涨幅榜
     * @return
     */
    @GetMapping("/stock/increase")
    ResponseResult<List<IncreaseVO>> increase();

    /**
     * 涨幅榜分页查询
     * @param page
     * @param pageSize
     * @return
     */
    @GetMapping("/stock/all")
    ResponseResult<StockAllVO<IncreaseVO>> stockAll(@RequestParam("page") Integer page,
                                                    @RequestParam("pageSize") Integer pageSize);

    /**
     * 涨跌停
     * @return
     */
    @GetMapping("/stock/updown/count")
    ResponseResult<UpDownCountVO<CountVO>> upDownCount();

    /**
     * 导出涨幅榜
     * @param page
     * @param pageSize
     * @param response
     */
    @GetMapping("/stock/export")
    void export(@RequestParam("page") Integer page, @RequestParam("pageSize") Integer pageSize, HttpServletResponse  response);

    /**
     * 统计国内A股大盘T日和T-1日成交量对比功能（成交量为沪市和深市成交量之和）
     * @return
     */
    @GetMapping("/stock/tradevol")
    ResponseResult<TradeVolVO<CountVO>> tradeVol();


    /**
     * 统计当前时间下（精确到分钟），股票在各个涨跌区间的数量
     * @return
     */
    @GetMapping("/stock/updown")
    ResponseResult<UpDownVO<InfoVO>> upDown();


    /**
     * 查询个股的分时行情数据，也就是统计指定股票T日每分钟的交易数据
     * @param code
     * @return
     */
    @GetMapping("/stock/screen/time-sharing")
    ResponseResult<List<TimeSharingVO>> timeSharing(@RequestParam("code")String code);


    /**
     * 单个个股日K数据查询 ，可以根据时间区间查询数日的K线数据
     * @param code
     * @return
     */
    @GetMapping("/stock/screen/dkline")
    ResponseResult<List<dkLineVO>> dkLine(@RequestParam("code")String code);
}
